<?php

namespace App\Http\Controllers;
use App\Models\User;
use App\Models\Status;
use Illuminate\Http\Request;
use Auth;
use Mail;
class UserController extends Controller
{
    //

   public   function __construct()
     {
       # code...
       $this->middleware('auth',[
         'except'=>['show','create','store','index','confirmEmail']
       ]);
       $this->middleware('guest',[
         'only'=>['create']
       ]);
     }

    public function create()
    {

    	return view('users.create');
    }

    public function show(User $user)
    {
      $statuses = $user->statuses()
                          ->orderBy('created_at', 'desc')
                          ->paginate(30);
       return view('users.show', compact('user', 'statuses'));


<<<<<<< HEAD
=======
      $statuses = $user->statuses()
                          ->orderBy('created_at', 'desc')
                          ->paginate(30);
       return view('users.show', compact('user', 'statuses'));

>>>>>>> user-statuses
    }
    public function store(Request $request)
    {
         $this->validate($request,[
           'name' =>'required|max:50',
           'email'=>'required|email|unique:users|max:255',
           'password'=>'required|confirmed|min:6'

         ]);
         $user = User::create([
           'name'=>$request->name,
           'email'=>$request->email,
           'password'=>bcrypt($request->password),
         ]);

         $this->sendEmailConfirmationTo($user);
         session()->flash('success', '验证邮件已发送到你的注册邮箱上，请注意查收。');
         return redirect('/') ;

    }

     protected function sendEmailConfirmationTo($user)
    {
      # code...
      $view = 'emails.confirm';
      $data = compact('user');
      $from='xiang_chunxiao@126.com';
      $name='xcxc';
      $to =$user->email;
      $subject="感谢注册 sample 应用! 请确认你的邮箱.";

      Mail::send($view, $data, function ($message) use ($from, $name, $to, $subject) {
            $message->from($from, $name)->to($to)->subject($subject);
        });

    }

    public function edit(User $user)
    {
      # code...
         $this->authorize('update',$user);
      return view('users.edit',compact('user'));
    }

    public function update(User $user, Request $request)
    {


          $this->validate($request, [
                'name' => 'required|max:50',
                'password' => 'required|confirmed|min:6'
            ]);
             $this->authorize('update',$user);
            $data=[];
            $data['name']=$request->name;
            if($request->password){
              $data['password'] = bcrypt($request->password);
            }
            $user->update($data);
            session()->flash('success', '个人资料更新成功');


            return redirect()->route('users.show', $user->id);

    }
    public function destroy(User $user)
    {
      # code...
      $this->authorize('destroy',$user);
      $user->delete();
      session()->flash('success','成功删除用户！');
      return back();

    }
    public function index( )
    {
      # code...
      $users=User::Paginate(10);
      return view('users.index',compact('users'));
    }

    public function confirmEmail($token)
    {
      # code...
      $user = User::where('activation_token', $token)->firstOrFail();

     $user->activated = true;
     $user->activation_token = null;
     $user->save();

     Auth::login($user);
     session()->flash('success', '恭喜你，激活成功！');
     return redirect()->route('users.show', [$user]);


    }

      # code...


}
